#include  <stdint.h>
#include  "mid_lcd.h"
#include  "mid_key.h"
#include  "mid_beep.h"
#include  "mid_bus.h"
#include  "mid_timer.h"
#include	"driver.h"
#include  "app.h"

static void disp_ui_v(void)
{
		if(UIoperate.CodeFlag)
			mid_lcdbianma(DISPON);
		else
			mid_lcdbianma(DISPOFF);
		
		if(UIoperate.SetFlag)
			mid_lcdshezhi(DISPON);
		else
			mid_lcdshezhi(DISPOFF);		
		
		if(UIoperate.Chongdian)
			mid_lcdchongdian(DISPON);
		else
			mid_lcdchongdian(DISPOFF);		
		
		if(UIoperate.Wrong)
			mid_lcdcuowu(DISPON);
		else
			mid_lcdcuowu(DISPOFF);		

	  if(UIoperate.LockFlag)
			mid_lcdsuoding(DISPON);
		else
			mid_lcdsuoding(DISPOFF);			
		
	  if(UIoperate.ContinuesFlag)
			mid_lcdlianxu(DISPON);
		else
			mid_lcdlianxu(DISPOFF);

	  if(UIoperate.Correct)
			mid_lcdzhengque(DISPON);
		else
			mid_lcdzhengque(DISPOFF);		
		
		if(UIoperate.Addr)
			mid_lcddizhi(DISPON);
		else
			mid_lcddizhi(DISPOFF);
		
		if(UIoperate.Data)
			mid_lcdshuju(DISPON);
		else
			mid_lcdshuju(DISPOFF);
		
		if(UIoperate.RdFlag)
			mid_lcdduchu(DISPON);
		else
			mid_lcdduchu(DISPOFF);
		
		if(UIoperate.WrFlag)
			mid_lcdxieru(DISPON);
		else
			mid_lcdxieru(DISPOFF);
		
	  mid_lcddisp_line1(UIpos[0], UIpos[1], UIpos[2]);	  
	  mid_lcddisp_line2(ReadYT_Lv/100, ReadYT_Lv/10%10, ReadYT_Lv%10);
	  strLcdD.frush = 1;
}
			 			 
void UI_YT_Lv(void)
{
			cmdPROBUF tmp;
			BUS_WORK();				
      if(GetKey(KEY_PRESS_UP))   
			{			
							BEEP_ON();
							UIoperate.Addr = 0;
							UIoperate.Data = 0;
							UIoperate.Wrong = 0;
							UIoperate.Correct = 0;
							UIoperate.RdFlag = 0;
							UIoperate.WrFlag = 0;
							switch (valuekey.val)
							 {
								  case 0x23:     								//0
									case 0x31:     								//7
									case 0x33:   									//8
									case 0x35:    								//9
									case 0x41:      							//4
									case 0x43:      							//5
									case 0x45:      							//6
									case 0x53:      							//2
									case 0x55:      							//3
									case 0x51:      							//1	
												
												ADDR[UIposition++] = ConvertKey(valuekey.val);		
												if(UIposition == 1)
												{
													UIpos[0] = 0;
													UIpos[1] = 0;
													UIpos[2] = ADDR[UIposition - 1];
												}else if(UIposition == 2)
												{											
													UIpos[0] = 0;
													UIpos[1] = ADDR[UIposition - 2];
													UIpos[2] = ADDR[UIposition - 1];
												}else if(UIposition == 3)
												{																
													UIpos[0] = ADDR[UIposition - 3];	
													UIpos[1] = ADDR[UIposition - 2];
													UIpos[2] = ADDR[UIposition - 1];
													ADDR[0]=ADDR[1]=ADDR[2]=0;
													UIposition = 0;
												}												
												UIaddr = 	UIpos[0]*100 + UIpos[1]*10 + UIpos[2];//20201213
												disp_ui_v();
												
												break;
									case 0x21:										//READ 																		
											tmp.ch = 0;
											tmp.cmd = 0x1d;
											tmp.addr = 0;																		
											write_cmfbuf(&tmp);
											ADDR[0]=ADDR[1]=ADDR[2]=0;
											UIposition = 0;
											disp_ui_v();
											break;
									
									case 0x25:     								//WRITEs																						
											tmp.ch = 0;
											tmp.cmd = 0x90;
											tmp.addr = 0;
											tmp.dat = UIaddr;
											write_cmfbuf(&tmp);
											delay_ms(20);
											tmp.ch = 0;
											tmp.cmd = 0x1d;
											tmp.addr = 0;
											write_cmfbuf(&tmp);
											ADDR[0]=ADDR[1]=ADDR[2]=0;
											disp_ui_v();																				
											break;
											
									case 0x27:  														
											break;
									
									case 0x37:      							//LIGHT									 
										  if(UIoperate.Backlight == 0)
										  {
											  UIoperate.Backlight = 1;
											  LCDBLACKON();									 
										  }
										  else
										  {
											  UIoperate.Backlight = 0;
											  LCDBLACKOFF();											 
										  }
											break;
								
									case 0x47: 										//TEST
											break;
									
									case 0x57: 					 					//SET
												UIoperate.RdFlag = 0;
												UIoperate.WrFlag = 0;
												UINUM++;
												UINUM = UINUM % UINUM_MAX;	
											break;
									
									case 0x11: 					 					//ESC
											break;
									
									case 0x13: 					 					//CONTINUE
											break;
									
									case 0x15: 					 					//OK												 									
											break;
									
									case 0x17: 					 					//CODE
											UINUM = 2;
											break;				 
							 }			 											
	}
			
	if(strLcdD.UIfresh)
	{
		if(strLcdD.UIinit)
		{
			strLcdD.UIinit = 0;
		  UIoperate.LastOperate = 0;
			UIoperate.ContinuesFlag = 0;
			UIoperate.Chongdian = 1;
			UIoperate.Correct = 0;
			UIoperate.Addr = 0;
			UIoperate.Data = 0;
			UIoperate.SetFlag = 1;
			UIoperate.CodeFlag = 0;
			UIoperate.LockFlag = 1;			
			UIoperate.Wrong = 0;
			UIoperate.RdFlag = 0;
			UIoperate.WrFlag = 0;
			UIoperate.IR_Start = 0;
			ReadYT_Lv = 0;
			UIaddr = 0;
			UIpos[0] = 0;
			UIpos[1] = 0;
			UIpos[2] = 0;
			ADDR[0]=ADDR[1]=ADDR[2]=0;			  		
		}
				

	
		disp_ui_v();
		strLcdD.UIfresh = 0;		
	}
}
